﻿/*
Copyright (c) 2005-2008, CellAO Team

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the name of the CellAO Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

using System;
using System.Collections.Generic;
using System.Text;

namespace ZoneEngine.Misc
{
    /// <summary>
    /// 
    /// </summary>
    class PlayfieldInfo
    {
        /*
         * At some point, this class will contain zone boarders/etc for zoning and any
         * other pf-specific related info such as a handle to the spawns list for the
         * playfield, currently spawned monsters and their locations, etc
         * 
         */
        /// <summary>
        /// 
        /// </summary>
        public int id;

        /// <summary>
        /// 
        /// </summary>
        public string name = string.Empty;

        /* 
         * What expansion(s) are required to be in this Playfield.
         * Bits have the same meaning as the Expansions stat. More than one can be set.
         * 
         */
        /// <summary>
        /// 
        /// </summary>
        public int expansionPlayfield = 0;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        /// <param name="expansion"></param>
        public PlayfieldInfo(int id, string name, int expansion)
        {
            this.id = id;
            this.name = name;
            this.expansionPlayfield = expansion;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        public PlayfieldInfo(int id, string name)
        {
            this.id = id;
            this.name = name;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        public PlayfieldInfo(int id)
        {
            this.id = id;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    static class Playfields
    {
        #region Playfield Info

        /// <summary>
        /// 
        /// </summary>
        public static readonly List<PlayfieldInfo> playfields = new List<PlayfieldInfo>
        {
            new PlayfieldInfo(100, "Needed PF-stuff"),
            new PlayfieldInfo(101, "Default Door Links"),
            new PlayfieldInfo(102, "Monster and NPC dependencies"),
            new PlayfieldInfo(103, "Shop and Item Dependencies"),
            new PlayfieldInfo(104, "One Template PF"),
            new PlayfieldInfo(105, "Morten gfx fixes"),
            new PlayfieldInfo(107, "AI graphics dependency"),
            new PlayfieldInfo(109, "LE dependencies"),
            new PlayfieldInfo(110, "Dependency EP1 Mons"),
            new PlayfieldInfo(111, "RK Quick Export Dependancy"),
            new PlayfieldInfo(120, "Camelot"),
            new PlayfieldInfo(124, "Tir Assembly Hall"),
            new PlayfieldInfo(125, "Smuggler's Rearranged"),
            new PlayfieldInfo(127, "Condemned Subway (dng)"),
            new PlayfieldInfo(128, "Subway Junction (dng)"),
            new PlayfieldInfo(152, "TheGrid2(dng)"),
            new PlayfieldInfo(320, "AutocontentMidtech(dung)"),
            new PlayfieldInfo(321, "AutocontentHITech(dung)"),
            new PlayfieldInfo(322, "Autocontentdungcave(dung)"),
            new PlayfieldInfo(324, "AutocontentClan(dung)"),
            new PlayfieldInfo(331, "ACD tarm (dng)"),
            new PlayfieldInfo(341, "ACD Grey Caves-Mines dng"),
            new PlayfieldInfo(346, "ACD Omnilab (dng)"),
            new PlayfieldInfo(351, "ACD Subway - Ventil (dng)"),
            new PlayfieldInfo(362, "SL ACG(dng)"),
            new PlayfieldInfo(382, "Alien ACG (dng)"),
            new PlayfieldInfo(386, "Alien Mothership (dng)"),
            new PlayfieldInfo(500, "Parnassos"),
            new PlayfieldInfo(501, "Parnassos Island of Ceremony"),
            new PlayfieldInfo(505, "Avalon"),
            new PlayfieldInfo(540, "Old Athen"),
            new PlayfieldInfo(545, "West Athens"),
            new PlayfieldInfo(550, "Athen Shire"),
            new PlayfieldInfo(551, "Wailing Wastes"),
            new PlayfieldInfo(556, "Coast of Peace"),
            new PlayfieldInfo(560, "Mort"),
            new PlayfieldInfo(565, "Newland Desert"),
            new PlayfieldInfo(566, "Newland City"),
            new PlayfieldInfo(567, "Newland"),
            new PlayfieldInfo(570, "The Perpetual Wastelands"),
            new PlayfieldInfo(585, "Aegean"),
            new PlayfieldInfo(586, "Wartorn Valley"),
            new PlayfieldInfo(590, "Central Artery Valley"),
            new PlayfieldInfo(595, "Deep Artery Valley"),
            new PlayfieldInfo(600, "Varmint Woods"),
            new PlayfieldInfo(605, "Belial Forest"),
            new PlayfieldInfo(610, "Southern Artery Valley"),
            new PlayfieldInfo(615, "Southern Fouls Hills"),
            new PlayfieldInfo(620, "Eastern Fouls Plains"),
            new PlayfieldInfo(625, "Milky Way"),
            new PlayfieldInfo(630, "Pleasant Meadows"),
            new PlayfieldInfo(635, "Stret East Bank GOLD"),
            new PlayfieldInfo(640, "Tir"),
            new PlayfieldInfo(641, "Tir Arena"),
            new PlayfieldInfo(646, "Tir County"),
            new PlayfieldInfo(647, "Greater Tir County"),
            new PlayfieldInfo(650, "Upper Stret East Bank"),
            new PlayfieldInfo(655, "Andromeda"),
            new PlayfieldInfo(656, "Coast of Tranquility"),
            new PlayfieldInfo(665, "Broken Shores"),
            new PlayfieldInfo(670, "Clondyke"),
            new PlayfieldInfo(685, "Galway County"),
            new PlayfieldInfo(687, "Galway Shire"),
            new PlayfieldInfo(695, "Lush Fields"),
            new PlayfieldInfo(696, "Mutant Domain"),
            new PlayfieldInfo(700, "Omni1-HEADQUARTER"),
            new PlayfieldInfo(705, "Omni1 Entertainment"),
            new PlayfieldInfo(706, "Omni Entertainment Arena"),
            new PlayfieldInfo(710, "Omni-1 Trade"),
            new PlayfieldInfo(716, "Omni Forest"),
            new PlayfieldInfo(717, "Greater Omni Forest"),
            new PlayfieldInfo(730, "Rome Park"),
            new PlayfieldInfo(735, "Rome Blue"),
            new PlayfieldInfo(740, "Rome Green"),
            new PlayfieldInfo(750, "The Reck"),
            new PlayfieldInfo(760, "4 Holes"),
            new PlayfieldInfo(790, "Stret West Bank"),
            new PlayfieldInfo(791, "Holes in the Wall"),
            new PlayfieldInfo(795, "The Longest Road"),
            new PlayfieldInfo(800, "Borealis"),
            new PlayfieldInfo(896, "Character Creation Lab Dng"),
            new PlayfieldInfo(950, "Omni Training"),
            new PlayfieldInfo(952, "Clan Training"),
            new PlayfieldInfo(953, "Clan Backyard"),
            new PlayfieldInfo(954, "Neutral Training"),
            new PlayfieldInfo(955, "Neutral Backyard"),
            new PlayfieldInfo(1001, "Senitel rec_centre (wine) GOLD"),
            new PlayfieldInfo(1002, "medical/eating (wine) GOLD"),
            new PlayfieldInfo(1003, "Wine hq (wine) GOLD"),
            new PlayfieldInfo(1004, "barracks (wine) GOLD"),
            new PlayfieldInfo(1005, "storage (wine) GOLD"),
            new PlayfieldInfo(1011, "2HO HQ (streteast) GOLD"),
            new PlayfieldInfo(1012, "2HO satellite (streteast) GOLD"),
            new PlayfieldInfo(1021, "OMni barracks (USEB) GOLD"),
            new PlayfieldInfo(1031, "Avalon omni barracks"),
            new PlayfieldInfo(1136, "Mir shop clan"),
            new PlayfieldInfo(1137, "mir shop omni"),
            new PlayfieldInfo(1180, "ord_smarket_clan_basic"),
            new PlayfieldInfo(1181, "ord_smarket_clan_advanced"),
            new PlayfieldInfo(1182, "ord_smarket_clan_sup"),
            new PlayfieldInfo(1183, "ord_smarket_omni_basic"),
            new PlayfieldInfo(1184, "ord_smarket_omni_advanced"),
            new PlayfieldInfo(1185, "ord_smarket_omni_sup"),
            new PlayfieldInfo(1186, "ord_smarket_neut_basic"),
            new PlayfieldInfo(1187, "ord_smarket_neut_advanced"),
            new PlayfieldInfo(1189, "spec_smarket_clan_advanced"),
            new PlayfieldInfo(1190, "spec_smarket_clan_sup"),
            new PlayfieldInfo(1191, "spec_smarket_omni_advanced"),
            new PlayfieldInfo(1192, "spec_smarket_omni_sup"),
            new PlayfieldInfo(1193, "spec_smarket_neut_basic"),
            new PlayfieldInfo(1211, "basicomniapartment dng"),
            new PlayfieldInfo(1231, "Clan Small Clan Apartment"),
            new PlayfieldInfo(1232, "Clan Medium Clan Apartment"),
            new PlayfieldInfo(1233, "Clan Big Clan Apartment"),
            new PlayfieldInfo(1241, "Neutral Small Clan Apartment"),
            new PlayfieldInfo(1242, "Neutral Medium Clan Apartment"),
            new PlayfieldInfo(1243, "Neutral Big Clan Apartment"),
            new PlayfieldInfo(1251, "Omni Small Guild"),
            new PlayfieldInfo(1321, "tir clanbuilding2 dng"),
            new PlayfieldInfo(1322, "tir clanbuilding1 dng"),
            new PlayfieldInfo(1323, "tir clanbuilding9 dng"),
            new PlayfieldInfo(1324, "tir clanbuilding11 dng"),
            new PlayfieldInfo(1325, "tir clanbuilding12 dng"),
            new PlayfieldInfo(1326, "tir clanbuilding3"),
            new PlayfieldInfo(1327, "tir clanbuilding_pod4 dng"),
            new PlayfieldInfo(1328, "tir clanbuilding5 dng"),
            new PlayfieldInfo(1329, "tir clanbuilding6 dng"),
            new PlayfieldInfo(1330, "tir clanbuilding7 dng"),
            new PlayfieldInfo(1404, "The Temple of Home"),
            new PlayfieldInfo(1405, "clanapartment"),
            new PlayfieldInfo(1406, "omniapartment"),
            new PlayfieldInfo(1407, "neutralapartment"),
            new PlayfieldInfo(1410, "items"),
            new PlayfieldInfo(1421, "avalon_building3 dng"),
            new PlayfieldInfo(1422, "avalon_building4 dng"),
            new PlayfieldInfo(1423, "avalon_building5"),
            /* bugged playfield */
            //new PlayfieldInfo(1424, "avalon_building2 dng"),
            new PlayfieldInfo(1426, "Clan Registration dng"),
            new PlayfieldInfo(1427, "Omni registration dng"),
            new PlayfieldInfo(1428, "Neutral organisation dng"),
            new PlayfieldInfo(1501, "omnimine_hq_building_06"),
            new PlayfieldInfo(1502, "omnimine_hq_building_02"),
            new PlayfieldInfo(1503, "omnimine_hq_building_04"),
            new PlayfieldInfo(1504, "omnimine_hq_building_07"),
            new PlayfieldInfo(1505, "omnimine_hq_building_08"),
            new PlayfieldInfo(1506, "omnimine_hq_building_09"),
            new PlayfieldInfo(1507, "omnimine_hq_building10"),
            new PlayfieldInfo(1510, "Neutral Insurance building"),
            new PlayfieldInfo(1511, "Neutral Mission building"),
            new PlayfieldInfo(1601, "athens_clanhouse1 VP dng"),
            new PlayfieldInfo(1602, "athens_clanhouse3 VP dng"),
            new PlayfieldInfo(1603, "athens_clanhouse4 VP dng"),
            new PlayfieldInfo(1604, "athens_clanhouse12 VP dng"),
            new PlayfieldInfo(1611, "Swamp_house01 VP dng"),
            new PlayfieldInfo(1612, "Swamp_house02"),
            new PlayfieldInfo(1613, "swamp_house03 VP dng"),
            new PlayfieldInfo(1614, "Swamp_house04 VP dng"),
            new PlayfieldInfo(1621, "wood_shack_01 VP dng"),
            new PlayfieldInfo(1622, "wood_shack_02 VP dng"),
            new PlayfieldInfo(1623, "wood_shack_03 VP dng"),
            new PlayfieldInfo(1624, "wood_shack_04 VP dng"),
            new PlayfieldInfo(1625, "wood_shack_05 VP dng"),
            new PlayfieldInfo(1626, "wood_shack_06 VP dng"),
            new PlayfieldInfo(1627, "wood_shack_07 VP dng"),
            new PlayfieldInfo(1641, "lowtech_building1 VP dng"),
            new PlayfieldInfo(1642, "lowtech_building2 VP dng"),
            new PlayfieldInfo(1643, "lowtech_building3 VP dng"),
            new PlayfieldInfo(1644, "lowtech_building4 VP dng"),
            new PlayfieldInfo(1645, "lowtech_building5 VP dng"),
            new PlayfieldInfo(1646, "lowtech_building6 VP dng"),
            new PlayfieldInfo(1647, "lowtech_building7 VP dng"),
            new PlayfieldInfo(1648, "lowtech_waterwell VP dng"),
            new PlayfieldInfo(1651, "rome_shopbuilding1 VP dng"),
            new PlayfieldInfo(1652, "rome_simplebuilding VP dng"),
            new PlayfieldInfo(1653, "rome_simplebuilding1 VP dng"),
            new PlayfieldInfo(1661, "rhino_house1 VP dng"),
            new PlayfieldInfo(1662, "rhino_house2 VP dng"),
            new PlayfieldInfo(1663, "rhino_house3 VP dng"),
            new PlayfieldInfo(1671, "reck_trading_outpost_bunker1 VP"),
            new PlayfieldInfo(1672, "reck_trading_outpost_bunker2 VP"),
            /* bugged playfield */
            //new PlayfieldInfo(1673, "reck_trading_outpost_bunker3 VP"),
            new PlayfieldInfo(1674, "reck_trading_outpost_bunker4 VP"),
            new PlayfieldInfo(1675, "reck_trading_outpost_bunker5 VP"),
            new PlayfieldInfo(1701, "Home VP dng 1 medium"),
            new PlayfieldInfo(1702, "Home VP dng 2 big"),
            new PlayfieldInfo(1703, "Home VP dng 3 small"),
            new PlayfieldInfo(1711, "Factory VP dng barracks"),
            new PlayfieldInfo(1712, "Factory VP dng factory"),
            new PlayfieldInfo(1721, "LD VP dng 1"),
            new PlayfieldInfo(1722, "LD VP dng 2"),
            new PlayfieldInfo(1741, "enigma_tree01"),
            new PlayfieldInfo(1742, "enigma_tree02"),
            new PlayfieldInfo(1743, "enigma_tree03"),
            new PlayfieldInfo(1826, "Dancing Atrox Bar"),
            new PlayfieldInfo(1827, "Omni Military Barracks"),
            new PlayfieldInfo(1833, "Dng: Cyborg Barracks"),
            new PlayfieldInfo(1836, "Baboons Nightclub"),
            new PlayfieldInfo(1840, "Rompa Bar"),
            new PlayfieldInfo(1846, "McRiid's Office"),
            new PlayfieldInfo(1862, "The Smugglers Den"),
            new PlayfieldInfo(1866, "The HQ of Omni-Mine"),
            new PlayfieldInfo(1886, "Versailles Tower"),
            new PlayfieldInfo(1887, "Treepine Hut"),
            new PlayfieldInfo(1891, "The Happy Rebel Inn"),
            new PlayfieldInfo(1892, "Enjoy it While it Lasts"),
            new PlayfieldInfo(1893, "The Cup"),
            new PlayfieldInfo(1894, "Clan Registration Office"),
            new PlayfieldInfo(1901, "Neutral Organisation Office"),
            new PlayfieldInfo(1902, "Neuters 'R' Us"),
            new PlayfieldInfo(1913, "Reet Retreat (dng)"),
            new PlayfieldInfo(1931, "Dng: Temple of Three Winds"),
            new PlayfieldInfo(1933, "Dng: Steps of Madness"),
            new PlayfieldInfo(1941, "Bio MARE"),
            new PlayfieldInfo(1943, "Dng: High Level ToTW"),
            new PlayfieldInfo(2001, "clan_basic_weapons_shop"),
            new PlayfieldInfo(2002, "clan_basic_armor_shop"),
            new PlayfieldInfo(2003, "clan_basic_pharmasist_shop"),
            new PlayfieldInfo(2004, "clan_basic_clothes_shop"),
            new PlayfieldInfo(2005, "clan_basic_implants_shop"),
            /* bugged playfield */
            //new PlayfieldInfo(2006, "clan_basic_nano_shop"),
            new PlayfieldInfo(2010, "clan_advanced_weapons_shop"),
            new PlayfieldInfo(2011, "clan_advanced_armor_shop"),
            new PlayfieldInfo(2012, "clan_advanced_pharmacist_shop"),
            new PlayfieldInfo(2013, "clan_advanced_implants_shop"),
            /* bugged playfield */
            //new PlayfieldInfo(2014, "clan_advanced_nano_shop"),
            new PlayfieldInfo(2020, "clan_sup_weapons_shop"),
            new PlayfieldInfo(2021, "clan_sup_armor_shop"),
            new PlayfieldInfo(2022, "clan_sup_pharmacist_shop"),
            new PlayfieldInfo(2023, "clan_sup_implants_shop"),
            /* bugged playfield */
            //new PlayfieldInfo(2024, "clan_sup_nano_shop"),
            new PlayfieldInfo(2030, "omni_basic_weapons_shop"),
            new PlayfieldInfo(2031, "omni_basic_armor_shop"),
            new PlayfieldInfo(2032, "omni_basic_pharmacist"),
            new PlayfieldInfo(2033, "omni_basic_clothes_shop"),
            new PlayfieldInfo(2034, "omni_basic_implants_shop"),
            new PlayfieldInfo(2040, "omni_advanced_weapons_shop"),
            new PlayfieldInfo(2041, "omni_advanced_armor_shop"),
            new PlayfieldInfo(2042, "omni_advanced_pharmacist_shop"),
            new PlayfieldInfo(2043, "omni_advanced_implants_shop"),
            new PlayfieldInfo(2050, "omni_sup_weapons_shop"),
            new PlayfieldInfo(2051, "omni_sup_armor_shop"),
            new PlayfieldInfo(2052, "omni_sup_pharmacist_shop"),
            new PlayfieldInfo(2053, "omni_sup_implants_shop"),
            new PlayfieldInfo(2060, "neut_basic_weapon _shop"),
            new PlayfieldInfo(2061, "neut_basic_armor_shop"),
            new PlayfieldInfo(2062, "neut_basic_pharmacist_shop"),
            new PlayfieldInfo(2063, "neut_basic_clothes_shop"),
            new PlayfieldInfo(2064, "neut_basic_implants_shop"),
            new PlayfieldInfo(2070, "neut_advanced_weapons_shop"),
            new PlayfieldInfo(2071, "neut_advanced_armor_shop"),
            new PlayfieldInfo(2072, "neut_advanced_pharmacist_shop"),
            new PlayfieldInfo(2073, "neut_advanced_implants_shop"),
            new PlayfieldInfo(2096, "4holes Fashion"),
            new PlayfieldInfo(3000, "Omni-1 Entertainment Backyard 1"),
            new PlayfieldInfo(3001, "Omni-1 Entertainment Backyard 2"),
            new PlayfieldInfo(3002, "Omni-1 Entertainment Backyard 3"),
            new PlayfieldInfo(3003, "Omni-1 Entertainment Backyard 4"),
            new PlayfieldInfo(3004, "Omni-1 Entertainment Backyard 5"),
            new PlayfieldInfo(3005, "Omni-1 Entertainment Backyard 6"),
            new PlayfieldInfo(3006, "Omni-1 Entertainment Backyard 7"),
            new PlayfieldInfo(3007, "Omni-1 Entertainment Backyard 8"),
            new PlayfieldInfo(3008, "Omni-1 Entertainment Backyard 9"),
            new PlayfieldInfo(3009, "Omni-1 Entertainment Backyard 10"),
            new PlayfieldInfo(3010, "Omni-1 Entertainment Backyard 11"),
            new PlayfieldInfo(3011, "Omni-1 Entertainment Backyard 12"),
            new PlayfieldInfo(3012, "Omni-1 Entertainment Backyard 13"),
            new PlayfieldInfo(3013, "Omni-1 Entertainment Backyard 14"),
            new PlayfieldInfo(3014, "Omni-1 Entertainment Backyard 15"),
            new PlayfieldInfo(3015, "Omni-1 Entertainment Backyard 16"),
            new PlayfieldInfo(3016, "Omni-1 Entertainment Backyard 17"),
            new PlayfieldInfo(3017, "Omni-1 Entertainment Backyard 18"),
            new PlayfieldInfo(3018, "Omni-1 Entertainment Backyard 19"),
            new PlayfieldInfo(3019, "Omni-1 Entertainment Backyard 20"),
            new PlayfieldInfo(3020, "Omni-1 Trade Backyard 1"),
            new PlayfieldInfo(3021, "Omni-1 Trade Backyard 2"),
            new PlayfieldInfo(3022, "Omni-1 Trade Backyard 3"),
            new PlayfieldInfo(3023, "Omni-1 Trade Backyard 4"),
            new PlayfieldInfo(3024, "Omni-1 Trade Backyard 5"),
            new PlayfieldInfo(3025, "Omni-1 Trade Backyard 6"),
            new PlayfieldInfo(3026, "Omni-1 Trade Backyard 7"),
            new PlayfieldInfo(3027, "Omni-1 Trade Backyard 8"),
            new PlayfieldInfo(3028, "Omni-1 Trade Backyard 9"),
            new PlayfieldInfo(3029, "Omni-1 Trade Backyard 10"),
            new PlayfieldInfo(3030, "Omni-1 Trade Backyard 11"),
            new PlayfieldInfo(3031, "Omni-1 Trade Backyard 12"),
            new PlayfieldInfo(3032, "Omni-1 Trade Backyard 13"),
            new PlayfieldInfo(3033, "Omni-1 Trade Backyard 14"),
            new PlayfieldInfo(3034, "Omni-1 Trade Backyard 15"),
            new PlayfieldInfo(3035, "Omni-1 Trade Backyard 16"),
            new PlayfieldInfo(3036, "Omni-1 Trade Backyard 17"),
            new PlayfieldInfo(3037, "Omni-1 Trade Backyard 18"),
            new PlayfieldInfo(3038, "Omni-1 Trade Backyard 19"),
            new PlayfieldInfo(3039, "Omni-1 Trade Backyard 20"),
            new PlayfieldInfo(3040, "Rome Blue Backyard 1"),
            new PlayfieldInfo(3041, "Rome Blue Backyard 2"),
            new PlayfieldInfo(3042, "Rome Blue Backyard 3"),
            new PlayfieldInfo(3043, "Rome Blue Backyard 4"),
            new PlayfieldInfo(3044, "Rome Blue Backyard 5"),
            new PlayfieldInfo(3045, "Rome Blue Backyard 6"),
            new PlayfieldInfo(3046, "Rome Blue Backyard 7"),
            new PlayfieldInfo(3047, "Rome Blue Backyard 8"),
            new PlayfieldInfo(3048, "Rome Blue Backyard 9"),
            new PlayfieldInfo(3049, "Rome Blue Backyard 10"),
            new PlayfieldInfo(3050, "Rome Green Backyard 1"),
            new PlayfieldInfo(3051, "Rome Green Backyard 2"),
            new PlayfieldInfo(3052, "Rome Green Backyard 3"),
            new PlayfieldInfo(3053, "Rome Green Backyard 4"),
            new PlayfieldInfo(3054, "Rome Green Backyard 5"),
            new PlayfieldInfo(3055, "Rome Green Backyard 6"),
            new PlayfieldInfo(3056, "Rome Green Backyard 7"),
            new PlayfieldInfo(3057, "Rome Green Backyard 8"),
            new PlayfieldInfo(3058, "Rome Green Backyard 9"),
            new PlayfieldInfo(3059, "Rome Green Backyard 10"),
            new PlayfieldInfo(3060, "Newland Backyard 1"),
            new PlayfieldInfo(3061, "Newland Backyard 2"),
            new PlayfieldInfo(3062, "Newland Backyard 3"),
            new PlayfieldInfo(3063, "Newland Backyard 4"),
            new PlayfieldInfo(3064, "Newland Backyard 5"),
            new PlayfieldInfo(3065, "Newland Backyard 6"),
            new PlayfieldInfo(3066, "Newland Backyard 7"),
            new PlayfieldInfo(3067, "Newland Backyard 8"),
            new PlayfieldInfo(3068, "Newland Backyard 9"),
            new PlayfieldInfo(3069, "Newland Backyard 10"),
            new PlayfieldInfo(3070, "Newland Backyard 11"),
            new PlayfieldInfo(3071, "Newland Backyard 12"),
            new PlayfieldInfo(3080, "Borealis Backyard 1"),
            new PlayfieldInfo(3081, "Borealis Backyard 2"),
            new PlayfieldInfo(3082, "Borealis Backyard 3"),
            new PlayfieldInfo(3083, "Borealis Backyard 4"),
            new PlayfieldInfo(3084, "Borealis Backyard 5"),
            new PlayfieldInfo(3085, "Borealis Backyard 6"),
            new PlayfieldInfo(3086, "Borealis Backyard 7"),
            new PlayfieldInfo(3087, "Borealis Backyard 8"),
            new PlayfieldInfo(3088, "Borealis Backyard 9"),
            new PlayfieldInfo(3089, "Borealis Backyard 10"),
            new PlayfieldInfo(3100, "Tir Backyard 1"),
            new PlayfieldInfo(3101, "Tir Backyard 2"),
            new PlayfieldInfo(3102, "Tir Backyard 3"),
            new PlayfieldInfo(3103, "Tir Backyard 4"),
            new PlayfieldInfo(3104, "Tir Backyard 5"),
            new PlayfieldInfo(3105, "Tir Backyard 6"),
            new PlayfieldInfo(3106, "Tir Backyard 7"),
            new PlayfieldInfo(3107, "Tir Backyard 8"),
            new PlayfieldInfo(3108, "Tir Backyard 9"),
            new PlayfieldInfo(3109, "Tir Backyard 10"),
            new PlayfieldInfo(3110, "Tir Backyard 11"),
            new PlayfieldInfo(3111, "Tir Backyard 12"),
            new PlayfieldInfo(3112, "Tir Backyard 13"),
            new PlayfieldInfo(3113, "Tir Backyard 14"),
            new PlayfieldInfo(3114, "Tir Backyard 15"),
            new PlayfieldInfo(3115, "Tir Backyard 16"),
            new PlayfieldInfo(3116, "Tir Backyard 17"),
            new PlayfieldInfo(3117, "Tir Backyard 18"),
            new PlayfieldInfo(3120, "Old Athen Backyard 1"),
            new PlayfieldInfo(3121, "Old Athen Backyard 2"),
            new PlayfieldInfo(3122, "Old Athen Backyard 3"),
            new PlayfieldInfo(3123, "Old Athen Backyard 4"),
            new PlayfieldInfo(3124, "Old Athen Backyard 5"),
            new PlayfieldInfo(3125, "Old Athen Backyard 6"),
            new PlayfieldInfo(3126, "Old Athen Backyard 7"),
            new PlayfieldInfo(3127, "Old Athen Backyard 8"),
            new PlayfieldInfo(3128, "Old Athen Backyard 9"),
            new PlayfieldInfo(3129, "Old Athen Backyard 10"),
            new PlayfieldInfo(3130, "Old Athen Backyard 11"),
            new PlayfieldInfo(3131, "Old Athen Backyard 12"),
            new PlayfieldInfo(3132, "Old Athen Backyard 13"),
            new PlayfieldInfo(3133, "Old Athen Backyard 14"),
            new PlayfieldInfo(3134, "Old Athen Backyard 15"),
            new PlayfieldInfo(3135, "Old Athen Backyard 16"),
            new PlayfieldInfo(3136, "Old Athen Backyard 17"),
            new PlayfieldInfo(3137, "Old Athen Backyard 18"),
            new PlayfieldInfo(3138, "Old Athen Backyard 19"),
            new PlayfieldInfo(3139, "Old Athen Backyard 20"),
            new PlayfieldInfo(3140, "West Athen Backyard 1"),
            new PlayfieldInfo(3141, "West Athen Backyard 2"),
            new PlayfieldInfo(3142, "West Athen Backyard 3"),
            new PlayfieldInfo(3143, "West Athen Backyard 4"),
            new PlayfieldInfo(3144, "West Athen Backyard 5"),
            new PlayfieldInfo(3145, "West Athen Backyard 6"),
            new PlayfieldInfo(3146, "West Athen Backyard 7"),
            new PlayfieldInfo(3147, "West Athen Backyard 8"),
            new PlayfieldInfo(3148, "West Athen Backyard 9"),
            new PlayfieldInfo(3149, "West Athen Backyard 10"),
            new PlayfieldInfo(4001, "Jobe Research"),
            new PlayfieldInfo(4005, "Burning Marshes"),
            new PlayfieldInfo(4006, "Penumbra"),
            new PlayfieldInfo(4010, "Garden of Redeemed Main"),
            new PlayfieldInfo(4011, "Garden_of_unredeemed"),
            new PlayfieldInfo(4102, "Beer And Booze (dng)"),
            new PlayfieldInfo(4107, "Fixer Grid (dng"),
            new PlayfieldInfo(4121, "Will To Fight"),
            new PlayfieldInfo(4211, "Maze_Acheron"),
            new PlayfieldInfo(4212, "Maze_Letha_scheol_red"),
            new PlayfieldInfo(4213, "Maze_Styx_ado_red"),
            new PlayfieldInfo(4214, "Maze_Eridan"),
            new PlayfieldInfo(4215, "Maze_Phlegethas1"),
            new PlayfieldInfo(4220, "Maze_Acheron (Unre)"),
            new PlayfieldInfo(4221, "Maze_Letha_scheol_unre"),
            new PlayfieldInfo(4222, "Maze_Styx_ado_unre"),
            new PlayfieldInfo(4223, "Maze_Eridan (Unre)"),
            new PlayfieldInfo(4224, "Maze_Phlegethas1 (Unre)"),
            new PlayfieldInfo(4310, "Nascense Frontier"),
            new PlayfieldInfo(4311, "Nascense Wilds"),
            new PlayfieldInfo(4312, "Nascense Swamp"),
            new PlayfieldInfo(4313, "Nascense Training Ground"),
            new PlayfieldInfo(4314, "Jobe Harbour Gateway (dng)"),
            new PlayfieldInfo(4315, "Jobe Market Gateway (dng)"),
            new PlayfieldInfo(4316, "Jobe Plaza Gateway (dng)"),
            new PlayfieldInfo(4318, "Nascense Portal"),
            new PlayfieldInfo(4320, "Penumbra Forest"),
            new PlayfieldInfo(4321, "Penumbra Valley"),
            new PlayfieldInfo(4322, "Penumbra Hollows"),
            new PlayfieldInfo(4324, "Penumbra Transit (dng)"),
            new PlayfieldInfo(4327, "Jobe Apartment Normal (dng)"),
            new PlayfieldInfo(4328, "Pandemonium Caina"),
            new PlayfieldInfo(4329, "Pandemonium Antenora"),
            new PlayfieldInfo(4330, "Pandemonium Ptolemea"),
            new PlayfieldInfo(4331, "Pandemonium Judecca"),
            new PlayfieldInfo(4334, "Rubi-Ka Rumble (dng)"),
            new PlayfieldInfo(4336, "Alappaa"),
            new PlayfieldInfo(4337, "Albtraum"),
            new PlayfieldInfo(4341, "Basic Omni org hq"),
            new PlayfieldInfo(4342, "Basic Clan org hq"),
            new PlayfieldInfo(4343, "Basic Neutral org hq"),
            new PlayfieldInfo(4344, "Advanced Omni org hq"),
            new PlayfieldInfo(4345, "Advanced Clan org hq"),
            new PlayfieldInfo(4346, "Advanced Neutral org hq"),
            new PlayfieldInfo(4347, "Superior Omni org hq"),
            new PlayfieldInfo(4348, "Superior Clan org hq"),
            new PlayfieldInfo(4349, "Superior Neutral org hq"),
            new PlayfieldInfo(4350, "...remember rule no. 1"),
            new PlayfieldInfo(4351, "Swimming Pool"),
            /* bugged playfield */
            //new PlayfieldInfo(4352, "Market"),
            new PlayfieldInfo(4354, "Uncle Bazzits Workshop (Dng)"),
            new PlayfieldInfo(4355, "Basic Player Market (Dng)"),
            new PlayfieldInfo(4356, "Advanced Player Market [dng]"),
            new PlayfieldInfo(4357, "Superior Player Market [dng]"),
            new PlayfieldInfo(4360, "Clinique Plastique"),
            new PlayfieldInfo(4363, "Tir Night Club (dng)"),
            new PlayfieldInfo(4364, "Unicorn Outpost"),
            new PlayfieldInfo(4365, "Sector 13"),
            new PlayfieldInfo(4366, "Sector 28"),
            new PlayfieldInfo(4367, "Sector 35"),
            new PlayfieldInfo(4368, "Unicorn Outpost - Lower level"),
            new PlayfieldInfo(4370, "new alien"),
            new PlayfieldInfo(4374, "Sector 10"),
            new PlayfieldInfo(4376, "ICC Assembly Hall (dng)"),
            new PlayfieldInfo(4380, "Battle Station 20-49"),
            new PlayfieldInfo(4381, "Battle Station 50-74"),
            new PlayfieldInfo(4382, "Battle Station 75-99"),
            new PlayfieldInfo(4383, "Battle Station 100-124"),
            new PlayfieldInfo(4384, "Battle Station 125-149"),
            new PlayfieldInfo(4385, "Battle Station 150-174"),
            new PlayfieldInfo(4386, "Battle Station 175-199"),
            new PlayfieldInfo(4387, "Battle Station 200-209"),
            new PlayfieldInfo(4388, "Battle Station 210-220"),
            new PlayfieldInfo(4504, "West Buggy (DONT DELETE)"),
            new PlayfieldInfo(4505, "South Buggy (DONT DELETE)"),
            new PlayfieldInfo(4524, "Elysium_pre-split"),
            new PlayfieldInfo(4525, "Jobe"),
            new PlayfieldInfo(4526, "Jobe_pre-split"),
            new PlayfieldInfo(4530, "Jobe Platform"),
            new PlayfieldInfo(4531, "Jobe Harbor"),
            new PlayfieldInfo(4532, "Jobe Market"),
            new PlayfieldInfo(4533, "Jobe Plaza"),
            new PlayfieldInfo(4534, "Jobe Apartment"),
            new PlayfieldInfo(4540, "South of Elysium"),
            new PlayfieldInfo(4541, "West of Elysium"),
            new PlayfieldInfo(4542, "Central Elysium"),
            new PlayfieldInfo(4543, "East of Elysium"),
            new PlayfieldInfo(4544, "North of Elysium"),
            new PlayfieldInfo(4561, "Arrival Hall Gateway (dng)"),
            new PlayfieldInfo(4563, "Hardware Dimension - Basic"),
            new PlayfieldInfo(4564, "Hardware Dimension - Advanced"),
            new PlayfieldInfo(4565, "Hardware Dimenion - Superior"),
            new PlayfieldInfo(4567, "Dimensional Shift - Basic"),
            new PlayfieldInfo(4568, "Dimensional Shift - Advanced"),
            new PlayfieldInfo(4569, "Dimensional Shift - Superior"),
            new PlayfieldInfo(4571, "Heavenly Business - Basic"),
            new PlayfieldInfo(4572, "Heavenly Business - Advanced"),
            new PlayfieldInfo(4573, "Heavenly Business - Superior"),
            new PlayfieldInfo(4575, "IPS Interior - Basic"),
            new PlayfieldInfo(4576, "IPS Interior - Advanced"),
            new PlayfieldInfo(4577, "IPS Interior - Superior"),
            new PlayfieldInfo(4582, "ICC Shuttleport"),
            new PlayfieldInfo(4604, "Arrival_hall"),
            new PlayfieldInfo(4605, "Inferno"),
            new PlayfieldInfo(4621, "Redeemed Temple (Elysium)"),
            new PlayfieldInfo(4622, "Unredeemed Temple (ELysium)"),
            new PlayfieldInfo(4623, "Redeemed Temple (Scheol)"),
            new PlayfieldInfo(4624, "Unredeemed Temple (Scheol)"),
            new PlayfieldInfo(4625, "Redeemed Temple (Adonis)"),
            new PlayfieldInfo(4626, "Unredeemed Temple (Adonis)"),
            new PlayfieldInfo(4627, "Redeemed Temple (Penumbra)"),
            new PlayfieldInfo(4628, "Unredeemed Temple (Penumbra)"),
            new PlayfieldInfo(4629, "Redeemed Temple (Inferno)"),
            new PlayfieldInfo(4630, "Unredeemed Temple (Inferno)"),
            new PlayfieldInfo(4676, "Garden of Redeemed Nascense"),
            new PlayfieldInfo(4677, "Garden_of_unredeemed Nascense"),
            new PlayfieldInfo(4678, "Garden of Redeemed Elysium"),
            new PlayfieldInfo(4679, "Garden of Redeemed Elysium2"),
            new PlayfieldInfo(4680, "Garden_of_unredeemed Elysium"),
            new PlayfieldInfo(4681, "Garden_of_unredeemed Elysium2"),
            new PlayfieldInfo(4682, "Garden of Redeemed Scheol"),
            new PlayfieldInfo(4683, "Garden_of_unredeemed Scheol"),
            new PlayfieldInfo(4684, "Garden of Redeemed Adonis"),
            new PlayfieldInfo(4685, "Garden of Redeemed Adonis2"),
            new PlayfieldInfo(4686, "Garden_of_unredeemed Adonis"),
            new PlayfieldInfo(4687, "Garden_of_unredeemed Adonis2"),
            new PlayfieldInfo(4688, "Garden of Redeemed Penumbra"),
            new PlayfieldInfo(4689, "Garden of Redeemed Penumbra2"),
            new PlayfieldInfo(4690, "Garden_of_unredeemed Penumbra"),
            new PlayfieldInfo(4691, "Garden_of_unredeemed Penumbra2"),
            new PlayfieldInfo(4692, "Garden of Redeemed Inferno"),
            new PlayfieldInfo(4693, "Garden of Redeemed Inferno2"),
            new PlayfieldInfo(4694, "Garden_of_unredeemed Inferno"),
            new PlayfieldInfo(4695, "Garden_of_unredeemed Inferno2"),
            new PlayfieldInfo(4696, "Garden of Redeemed Pandemonium"),
            new PlayfieldInfo(4697, "Garden of unredeemed Pandemonium"),
            new PlayfieldInfo(4698, "Garden of Redeemed Scheol2"),
            new PlayfieldInfo(4699, "Garden_of_unredeemed Scheol2"),
            new PlayfieldInfo(4704, "Booster Shop (dungeon)"),
            new PlayfieldInfo(4805, "The Crypt of Home"),
            new PlayfieldInfo(4833, "Teleport Tower"),
            new PlayfieldInfo(4872, "Adonis City"),
            new PlayfieldInfo(4873, "Adonis Abyss"),
            new PlayfieldInfo(4877, "Adonis Hallway"),
            new PlayfieldInfo(4880, "Upper Scheol"),
            new PlayfieldInfo(4881, "Lower Scheol"),
            new PlayfieldInfo(4885, "Shadow Crypt"),
            new PlayfieldInfo(4894, "Coast of Harmony"),
            new PlayfieldInfo(4898, "Broken Shores AI movie"),
            new PlayfieldInfo(4899, "Broken Shores AI Demo"),
            new PlayfieldInfo(6003, "The Dig Site"),
            new PlayfieldInfo(6055, "Inside The Machine")
        };

        #endregion

        /// <summary>
        /// 
        /// </summary>
        /// <param name="playfieldName"></param>
        /// <returns></returns>
        public static int PlayfieldNameToPlayfieldId(string playfieldName)
        {
            foreach (PlayfieldInfo pfInfo in playfields)
            {
                if (pfInfo.name == playfieldName)
                    return pfInfo.id;
            }

            return 0;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="playfieldId"></param>
        /// <returns></returns>
        public static string PlayfieldIdToPlayfieldName(int playfieldId)
        {
            foreach (PlayfieldInfo pfInfo in playfields)
            {
                if (pfInfo.id == playfieldId)
                    return pfInfo.name;
            }

            return string.Empty;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="playfieldId"></param>
        /// <returns></returns>
        public static bool ValidPlayfield(int playfieldId)
        {
            foreach (PlayfieldInfo pfInfo in playfields)
            {
                if (pfInfo.id == playfieldId)
                    return true;
            }

            return false;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="playfieldName"></param>
        /// <returns></returns>
        public static bool ValidPlayfield(string playfieldName)
        {
            foreach (PlayfieldInfo pfInfo in playfields)
            {
                if (pfInfo.name == playfieldName)
                    return true;
            }

            return false;
        }
    }
}
